package events

import "BookStack/pkg/utils"

// 分类相关的事件类型常量
const (
	CategoryCreatedEventType      = "category.created"       // 分类创建事件
	CategoryUpdatedEventType      = "category.updated"       // 分类更新事件
	CategoryDeletedEventType      = "category.deleted"       // 分类删除事件
	CategoryStatusSetEventType    = "category.status.set"    // 分类状态设置事件
	CategoryOrderSetEventType     = "category.order.set"     // 分类排序设置事件
	CategoryContentMovedEventType = "category.content.moved" // 分类内容移动事件
)

// CategoryCreatedEvent 分类创建事件
type CategoryCreatedEvent struct {
	ID          uint           `json:"id"`
	Name        string         `json:"name"`
	Slug        string         `json:"slug"`
	Type        int            `json:"type"`
	ParentID    uint           `json:"parent_id"`
	Description string         `json:"description"`
	Order       int            `json:"order"`
	Status      int            `json:"status"`
	CreatedBy   uint           `json:"created_by"`
	CreatedAt   utils.JSONTime `json:"created_at"`
}

// CategoryUpdatedEvent 分类更新事件
type CategoryUpdatedEvent struct {
	ID          uint           `json:"id"`
	Name        string         `json:"name"`
	Slug        string         `json:"slug"`
	Type        int            `json:"type"`
	ParentID    uint           `json:"parent_id"`
	Description string         `json:"description"`
	Order       int            `json:"order"`
	Status      int            `json:"status"`
	UpdatedBy   uint           `json:"updated_by"`
	UpdatedAt   utils.JSONTime `json:"updated_at"`
}

// CategoryDeletedEvent 分类删除事件
type CategoryDeletedEvent struct {
	ID        uint           `json:"id"`
	Name      string         `json:"name"`
	Slug      string         `json:"slug"`
	Type      int            `json:"type"`
	DeletedBy uint           `json:"deleted_by"`
	DeletedAt utils.JSONTime `json:"deleted_at"`
}

// CategoryStatusSetEvent 分类状态设置事件
type CategoryStatusSetEvent struct {
	ID        uint           `json:"id"`
	Status    int            `json:"status"`
	UpdatedBy uint           `json:"updated_by"`
	UpdatedAt utils.JSONTime `json:"updated_at"`
}

// CategoryOrderSetEvent 分类排序设置事件
type CategoryOrderSetEvent struct {
	ID        uint           `json:"id"`
	Order     int            `json:"order"`
	UpdatedBy uint           `json:"updated_by"`
	UpdatedAt utils.JSONTime `json:"updated_at"`
}

// CategoryContentMovedEvent 分类内容移动事件
type CategoryContentMovedEvent struct {
	ID               uint           `json:"id"`
	TargetCategoryID uint           `json:"target_category_id"`
	ContentIDs       []uint         `json:"content_ids"`
	MovedBy          uint           `json:"moved_by"`
	MovedAt          utils.JSONTime `json:"moved_at"`
}
